package cn.flkj.gmca.ca.md5;

import org.bouncycastle.crypto.Digest;
import org.bouncycastle.crypto.digests.MD5Digest;

/**
 * @author : 州长在手 2020/12/16 上午9:57
 */
public class MD5Util {
    /**
     * SM4 目前只支持128位16字节密钥，但是SM3哈希摘要是256位32字节。
     * 有两种方案可以解决密钥长度问题：
     * 1.SM3产生32字节密钥截取16字节数据
     * 2.直接使用MD5获取16字节数据（最终选择）
     * @param src 待加密数据
     * @return 16进制编码后的字符串
     */
    public static String bcMD5(String src) {
        Digest digest = new MD5Digest();
        digest.update(src.getBytes(), 0, src.getBytes().length);
        byte[] md5Bytes = new byte[digest.getDigestSize()];
        digest.doFinal(md5Bytes, 0);
        return org.bouncycastle.util.encoders.Hex.toHexString(md5Bytes);
    }
}
